home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / utility / utilfile / lha2lzx.lha / LHA2LZX.rexx < prev    next >
OS/2 REXX Batch file  |  1997-01-07  |  6KB  |  180 lines

  1. /* This script converts LHA archives to LZX archives
  2.  * Author: Martin Hilpert (hima0011@fh-karlsruhe.de)
  3.  * $VER: LHA2LZX 1.2 (07.01.97) © 1996 by Martin Hilpert (hima0011@fh-karlsruhe.de)
  4.  */
  5.  
  6. ADDRESS COMMAND   /* for executing DOS commands */
  7.  
  8. IF ARG() ~= 1 THEN DO
  9.   SAY "usage: rx LHA2LZX [options] <LHA archive with full path> <destination path>"
  10.   SAY "options are: -t enable testing of archives"
  11.   SAY "             -f enable filenote"
  12.   SAY "             -n disable deletion of dearchived files"
  13.   SAY "             -s Amiga talks ..."
  14.   SAY "             +v<PathOfVirusZ> enable virus checking"
  15.   SAY "             +z<TempPath> path for the temporary directory"
  16.   EXIT 5
  17. END
  18.  
  19. /* split argument string to different parts */
  20. PARSE ARG Arguments
  21.  
  22. iDevice = LASTPOS(":",Arguments)
  23. iDevice = LASTPOS(":",Arguments,iDevice-1)
  24. iSpace1 = LASTPOS(" ",Arguments,iDevice)
  25. Options = SUBSTR(Arguments,1,iSpace1)
  26. iSpace2 = POS(" ",Arguments,iDevice)
  27. iSourcePath = LASTPOS("/",Arguments,iSpace2)
  28. SourcePath = SUBSTR(Arguments,iSpace1+1,iSourcePath-iSpace1)
  29. LhaArchive = SUBSTR(Arguments,iSourcePath+1,iSpace2-1-iSourcePath)
  30. Basename = SUBSTR(LhaArchive,1,LASTPOS(".",LhaArchive)-1)
  31. iSpace1 = LASTPOS(" ",Arguments)
  32. iDevice = LASTPOS(":",Arguments)
  33. iSpace2 = LASTPOS(" ",Arguments,iDevice)
  34. DestinationPath = SUBSTR(Arguments,iSpace2+1,LENGTH(Arguments)-iSpace2)
  35.  
  36. IF POS("-t",Options) ~= 0 THEN
  37.   o_test = 1
  38. else
  39.   o_test = 0
  40.  
  41. IF POS("-s",Options) ~= 0 THEN
  42.   o_speech = 1
  43. else
  44.   o_speech = 0
  45.  
  46. IF POS("-f",Options) ~= 0 THEN
  47.   o_filenote = 1
  48. else
  49.   o_filenote = 0
  50.  
  51. IF POS("-n",Options) ~= 0 THEN
  52.   o_nodelete = 1
  53. else
  54.   o_nodelete = 0
  55.  
  56. /* temporary path for dearchived files */
  57. TempPath = "RAM:"              /* default path */
  58. Index = POS("+z",Options)
  59. IF Index ~= 0 THEN DO
  60.   iSpace = POS(" ",Options,Index)      /* end of +zDevice:Path */
  61.   IF iSpace == 0 THEN                  /* last option ? */
  62.     iSpace = LENGTH(Options) + 1
  63.   TempPath = SUBSTR(Options,Index+2,iSpace-Index-2)
  64.   TempPath = SPACE(TempPath,0)
  65.   IF LASTPOS("/",TempPath) ~= LENGTH(TempPath) THEN   /* last character a slash? */
  66.     TempPath = TempPath || "/"         /* slash is mandatory */
  67. END
  68. TempPath = TempPath || "LHA2LZX/"
  69.  
  70. o_virustest = 0
  71. Index = POS("+v",Options)
  72. IF Index ~= 0 THEN DO
  73.   iSpace = POS(" ",Options,Index)      /* end of +vDevice:Path */
  74.   IF iSpace == 0 THEN                  /* last option ? */
  75.     iSpace = LENGTH(Options) + 1
  76.   ViruszPath = SUBSTR(Options,Index+2,iSpace-Index-2)
  77.   ViruszPath = SPACE(ViruszPath,0)
  78.   IF EXISTS(ViruszPath'VirusZ') == 1 THEN
  79.     o_virustest = 1
  80.   else
  81.     'echo "*E[31;42mCan''t find VirusZ!*E[0m"'
  82. END
  83.  
  84. IF POS("-c",Options) ~= 0 THEN DO
  85.   'echo "              options:"' Options
  86.   'echo "     source directory:"' SourcePath
  87.   'echo "              archive:"' LhaArchive
  88.   'echo "             basename:"' Basename
  89.   'echo "destination directory:"' DestinationPath
  90.   'echo "  temporary directory:"' TempPath
  91.   IF o_virustest == 1 THEN
  92.     'echo "      VirusZ location:"' ViruszPath
  93. END
  94.  
  95. /**************************************/
  96. IF o_test = 1 THEN DO
  97.   'echo "*E[32;41mtesting LHA archive ...*E[0m"'
  98.   IF o_speech = 1 THEN
  99.     'say "testing Elleigeigh r kive"'
  100.   'LHA -b64 -F t' SourcePath || LhaArchive
  101.   IF RC ~= 0 THEN DO
  102.     'FILENOTE' SourcePath || LhaArchive 'COMMENT "FAILED archive test!"'
  103.     'echo "*E[31;42mLHA archive test failed!*E[0m (exiting...)"'
  104.     IF o_speech = 1 THEN
  105.       'say "Attention! Something went wrong!"'
  106.     EXIT 10
  107.   END
  108.   IF o_filenote = 1 THEN
  109.     'FILENOTE' SourcePath || LhaArchive 'COMMENT "archive tested"'
  110. END
  111.  
  112. /**************************************/
  113. 'echo "*E[32;41mdearchiving LHA ...*E[0m"'
  114. 'DELETE' TempPath'#? ALL FORCE QUIET'   /* clear TempPath */
  115. IF RC ~= 0 & RC ~= 5 THEN DO   /* is there some stuff left? */
  116.   'echo "*E[31;42mCan''t delete whole temporary directory!*E[0m (exiting...)"'
  117.   IF o_speech = 1 THEN
  118.     'say "Attention! Something went wrong!"'
  119.   EXIT 10
  120. END
  121. IF o_speech = 1 THEN
  122.   'say "unpacking Elleigeigh r kive"'
  123. 'LHA -b64 -F x' SourcePath || LhaArchive TempPath
  124. IF RC ~= 0 THEN DO
  125.   'FILENOTE' SourcePath || LhaArchive 'COMMENT "FAILED dearchiving!"'
  126.   'echo "*E[31;42mLHA dearchiving failed!*E[0m (exiting...)"'
  127.   IF o_speech = 1 THEN
  128.     'say "Attention! Something went wrong!"'
  129.   EXIT 10
  130. END
  131.  
  132. /**************************************/
  133. IF o_virustest = 1 THEN DO
  134.   'echo "*E[32;41mchecking files for viruses ...*E[0m"'
  135.   IF o_speech = 1 THEN
  136.     'say "Checking files for viruses"'
  137.   ViruszPath'VirusZ CX_POPUP=NO FILECHECK' TempPath'#? ALL'
  138.   IF RC ~= 0 THEN DO
  139.     'echo "*E[31;42mVirus checking failed!*E[0m (exiting...)"'
  140.   IF o_speech = 1 THEN
  141.     'say "Attention! Something went wrong!"'
  142.   EXIT 10
  143.   END
  144. END
  145.  
  146. /**************************************/
  147. 'echo "*E[32;41marchiving to LZX archive ...*E[0m"'
  148. IF o_speech = 1 THEN
  149.   'say "packing files to Elzetex r kive"'
  150. /* save path and cd to temporary path */
  151. OriDir = PRAGMA('D',TempPath)
  152. 'LZX -r -e -3 -M8000 -F -Y -bi256 -bo256 -wRAM: a' DestinationPath || Basename '*'
  153. IF RC ~= 0 THEN DO
  154.   'echo "*E[31;42mLZX archiving failed!*E[0m (exiting...)"'
  155.   IF o_speech = 1 THEN
  156.     'say "Attention! Something went wrong!"'
  157.   EXIT 10
  158. END
  159. RC = PRAGMA('D',OriDir)   /* restore old path */
  160. IF o_nodelete = 0 THEN
  161.   'DELETE' TempPath'#?' TempPath 'ALL FORCE QUIET'
  162.  
  163. /**************************************/
  164. IF o_test = 1 THEN DO
  165.   'echo "*E[32;41mtesting LZX archive ...*E[0m"'
  166.   IF o_speech = 1 THEN
  167.     'say "testing Elzetex r kive"'
  168.   'LZX -F t' DestinationPath || Basename
  169.   IF o_filenote = 1 THEN
  170.     'FILENOTE' DestinationPath || Basename || ".lzx" 'COMMENT "archive tested"'
  171. END
  172.  
  173. SAY "LHA2LZX finished - goodbye!"
  174. IF o_speech = 1 THEN
  175.   'say "Elleigeigh to Elzetex finished - goodbuy!"'
  176.  
  177. End:
  178. EXIT
  179.  
  180.